home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / GRAPTIES / GIFDOT13.LZH / VGAFIX.ASM < prev    next >
Assembly Source File  |  1988-07-15  |  3KB  |  110 lines

  1. CSEG            SEGMENT
  2.                 ASSUME  CS:CSEG, DS:CSEG, ES:CSEG
  3.         ORG     0100H
  4. START:          JMP     INITIALIZE
  5.  
  6. OldInt10        DD      ?
  7. red             db      ?
  8. grn             db      ?
  9. blu             db      ?
  10.  
  11. NewInt10        PROC    FAR
  12.                 ASSUME  DS:NOTHING, ES:NOTHING
  13.  
  14.         CMP     AH,10H          ;PALETTE/ATTRIBUTE FUNC ?
  15.         JE      CHECK_SubFunc   ;YES ! - check subfuntion
  16.  
  17. INT10_EXIT:     JMP     CS:OldInt10     ;Continue with original
  18.  
  19. CHECK_SubFunc:  CMP     AL,10H          ;SINGLE DAC UPDATE
  20.         JE      DAC_UPDATE      ;YES ! - goto new DAC UPDATE
  21.         CMP     AL,15H          ;SINGLE DAC READ
  22.         JE      DAC_READ        ;YES ! - goto new DAC READ
  23.  
  24.         JMP     INT10_EXIT      ;none of the above
  25.  
  26. DAC_UPDATE:     mov     red,dh
  27.         mov     grn,ch
  28.         mov     blu,cl
  29.         push    cs
  30.         pop     es              ;get seg of DAC table
  31.         mov     dx,offset red   ;get offset of DAC table
  32.         mov     ah,10H
  33.         mov     al,12H          ;block DAC update SubFunc
  34.         mov     cx,1            ;read 1 DAC (BX same as orig)
  35.         int     10H
  36.         IRET
  37.  
  38. DAC_READ:       push    cs
  39.         pop     es              ;get seg of DAC table
  40.         mov     dx,offset red   ;get offset of DAC table
  41.         mov     ah,10H
  42.         mov     al,17H          ;block DAC read SubFunc
  43.         mov     cx,1            ;read 1 DAC (BX same as orig)
  44.         int     10H
  45.         mov     dh,red
  46.         mov     ch,grn
  47.         mov     cl,blu
  48.         IRET                    ;fini
  49.  
  50. NewInt10        ENDP
  51.  
  52. LASTBYTE        =       $
  53.  
  54.  
  55.                 ASSUME  CS:CSEG, DS:CSEG, ES:NOTHING
  56. INITIALIZE      PROC    NEAR
  57.  
  58. CRCret:         MOV     DX,OFFSET COPYRIGHT
  59.         MOV     AH,9
  60.         INT     21H
  61.  
  62.         NOT     WORD PTR START
  63.         XOR     BX,BX
  64.         MOV     AX,CS
  65.  
  66. NextSeg:        INC     bx
  67.         CMP     ax,bx
  68.         MOV     es,bx
  69.         JE      NOT_Resident
  70.         MOV     si,OFFSET START
  71.         MOV     di,si
  72.         MOV     cx,16
  73.         REP     CMPSB
  74.         OR      cx,cx
  75.         JNZ     NextSeg
  76. Resident:       MOV     DX,OFFSET Resident_MSG
  77.  
  78.         MOV     ah,9
  79.                 INT     21H
  80.         MOV     ax,4C01H
  81.                 INT     21H
  82. NOT_Resident:
  83.         MOV     ax,3510H
  84.                 INT     21H
  85.         MOV     WORD PTR [OldInt10],  BX
  86.         MOV     WORD PTR [OldInt10+2],ES
  87.         MOV     DX, OFFSET NewInt10
  88.         MOV     AX, 2510H
  89.         INT     21H
  90.  
  91.      mov     dx, offset LASTBYTE
  92.      mov     cl, 4
  93.      shr     dx, cl
  94.      inc     dx
  95.      mov     ah, 31H
  96.      mov     al, 0
  97.      INT     21H
  98.  
  99. INITIALIZE      ENDP
  100.  
  101. COPYRIGHT       DB      13,10
  102.         DB      "VGAFIX v1.0 Copr. (c) 1988 Lawrence & Marvin Gozum"
  103.         DB      13,10
  104.         DB      "$",1Ah
  105.  
  106. Resident_MSG    DB      13,10,7,"VGAFIX already resident !  Aborting.$"
  107.  
  108. CSEG            ENDS
  109.                 END     START
  110.